package com.niiwoo.civet.trade.dto.response.creditor;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wping
 * @Description: 债转筛选dubbo返回对象
 * @date 2018/5/14 16:50
 */
@Getter
@Setter
@ToString
public class CreditorSaleSelectorResponseDTO implements Serializable {
    private static final long serialVersionUID = 4951510052717265237L;

    // 调用来源（1:APP，2:H5）
    private Byte fromType;

    // 利率配置
    private List<RateConfig> rateConfigs = new ArrayList<>();

    // 期限配置
    private List<PeriodConfig> periodConfigs = new ArrayList<>();

    // 转让价格配置
    private List<SortConfig> sortConfigs = new ArrayList<>();

    // 优惠方式配置
    private List<FavorableTypeConfig> favorableTypeConfigs = new ArrayList<>();

    //"收益方式配置"
    private List<RepayMentTypeConfig> repayMentTypeConfig = new ArrayList<>();

    //("产品类型配置")
    private List<ProductConfig> productConfigs = new ArrayList<>();

    @Setter
    @Getter
    @ToString
    // 利率配置
    public class RateConfig implements Serializable {
        private static final long serialVersionUID = 1534706863805667934L;
        // 利率-标题
        private String rateTitle;

        // 利率-起
        private BigDecimal rateBegin;

        // 利率-起查询类型：1大于，2大于等于，3等于
        private Byte rateBeginQueryType;

        // 利率-止
        private BigDecimal rateEnd;

        // 利率-止查询类型：1小于，2小于等于，3等于
        private Byte rateEndQueryType;

        // 利率-排序值
        private Integer rateSortValue;
    }

    @Setter
    @Getter
    @ToString
    // 期限配置
    public class PeriodConfig implements Serializable {
        private static final long serialVersionUID = -593918625975031277L;
        // 期限-标题
        private String periodTitle;

        // 期限-起
        private Integer periodBegin;

        // 期限-起查询类型：1大于，2大于等于，3等于
        private Byte periodBeginQueryType;

        // 期限-止
        private Integer periodEnd;

        // 期限-止查询类型：1小于，2小于等于，3等于
        private Byte periodEndQueryType;

        // 期限单位：1月，2天
        private Byte unit;

        // 期限-排序值
        private Integer periodSortValue;
    }

    @Setter
    @Getter
    @ToString
    //@ApiModel("默认排序配置")
    public class SortConfig implements Serializable{
        private static final long serialVersionUID = -1168782496304092634L;
        //@ApiModelProperty("默认排序-标题")
        private String sortTitle;

        //@ApiModelProperty("默认排序-排序值")
        private Byte sortValue;
    }

    @Setter
    @Getter
    @ToString
    // 优惠方式配置
    public class FavorableTypeConfig implements Serializable{

        private static final long serialVersionUID = 2166137708932669943L;
        // 优惠方式-标题
        private String favorableTypeTitle;

        // 优惠方式：1全价转让，2降价转让
        private Byte favorableTypeValue;

        // 优惠方式-排序值
        private Integer favorableTypeSortValue;

    }

    @Setter
    @Getter
    @ToString
    //("收益方式配置")
    public class RepayMentTypeConfig implements Serializable{

        private static final long serialVersionUID = 4353639580058743131L;
        //("收益方式标题")
        private String repaymentTypeTitle;

        //("收益方式：2等额本息，3先息后本")
        private Byte repaymentTypeValue;

        //("收益方式-排序值")
        private Integer repaymentTypeSortValue;

    }

    @Setter
    @Getter
    @ToString
    public class ProductConfig implements Serializable{
        private static final long serialVersionUID = 4315118397389988977L;
        private String borrowerTypeTitle;

        private Byte borrowerTypeValue;

        private Integer borrowerTypeSortValue;

    }
}
